package com.framework.util;

import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Page;
import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.EventListener;
import org.zkoss.zk.ui.event.Events;
import org.zkoss.zk.ui.ext.AfterCompose;
import org.zkoss.zul.Div;
import org.zkoss.zul.Hbox;
import org.zkoss.zul.Space;
import org.zkoss.zul.Toolbarbutton;
import org.zkoss.zul.Vbox;
import org.zkoss.zul.Window;

public class SolicitadorActionUtil extends Window implements AfterCompose{
	
//	private static Logger log = Logger.getLogger(SolicitadorActionUtil.class);
	
	private ISolicitadorAccion solicitadorAccion;
	
	public SolicitadorActionUtil(Page page, ISolicitadorAccion solicitadorAccion){
		// llamamos el constructor
		super();
		setPage(page); 
		this.solicitadorAccion = solicitadorAccion;
		afterCompose();
	}

	@SuppressWarnings("deprecation")
	@Override
	public void afterCompose() {
		if(solicitadorAccion != null){
			//log.info("Cargamos vista");  
			
			
			Div div = new Div(); 
			div.setWidth("100%");
			div.setHeight("100%");  
			div.setAlign("center"); 
			
			
			Vbox vbox = new Vbox();
			vbox.setAlign("center");  
			
			
			Component component = solicitadorAccion.getCuerpoComponente();
			if(component != null){
				vbox.appendChild(component);
			}
			
			// Agregamos acciones
			Hbox hbox = new Hbox();
			Toolbarbutton toolbarbutton = new Toolbarbutton("Aceptar", "/images/ok.jpg");
			toolbarbutton.addEventListener(Events.ON_CLICK, new EventListener<Event>() {
				@Override
				public void onEvent(Event arg0) throws Exception {
					solicitadorAccion.aceptar(SolicitadorActionUtil.this);
				}
			});
			hbox.appendChild(toolbarbutton);
			
			hbox.appendChild(new Space());
			
			toolbarbutton = new Toolbarbutton("Cancelar");
			toolbarbutton.addEventListener(Events.ON_CLICK, new EventListener<Event>() {
				@Override
				public void onEvent(Event arg0) throws Exception {
					solicitadorAccion.cancelar(SolicitadorActionUtil.this);
				}
			});
			hbox.appendChild(toolbarbutton);
			hbox.setVisible(solicitadorAccion.isVisibleButton());
			
			Space space = new Space(); 
			space.setBar(true); 
			space.setOrient("horizontal");
			space.setWidth("100%");  
			space.setVisible(solicitadorAccion.isVisibleButton());
			vbox.appendChild(space);
			vbox.appendChild(hbox);
			div.appendChild(vbox); 
			appendChild(div);
		}
	}
	
	public interface ISolicitadorAccion{
		
		public Component getCuerpoComponente();
		
		public void aceptar(SolicitadorActionUtil solicitadorActionUtil);
		
		public void cancelar(SolicitadorActionUtil solicitadorActionUtil);
		
		public boolean isVisibleButton();
	}
}
